package com.yjz.ui.view

import android.app.Activity
import android.graphics.Color
import android.os.Build
import android.view.View
import android.view.WindowManager

/**
 *作用 :
 *作者 : yjz
 *时间 : 2025/3/19 11:41
 */
object HiStatusBar {

    /**
     * @param darkContent 深色主题 true 白底黑字  false 白字黑底
     * @param statusBarColor 状态栏颜色
     * @param translucent 是否使用沉浸时，true 延伸到状态栏 false 不延伸
     */
    fun setStatusBar(activity: Activity, darkContent: Boolean, statusBarColor: Int = Color.WHITE, translucent: Boolean) {
        val window = activity.window
        val decorView = window.decorView
        var visibility = decorView.visibility

        if (Build.VERSION.SDK_INT > Build.VERSION_CODES.LOLLIPOP) {
            // 请求绘制 绘制状态栏的背景色
            window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS)
            // 两者不能都存在 FLAG_TRANSLUCENT_STATUS
            window.clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS)
            window.statusBarColor = statusBarColor
        }


        if (Build.VERSION.SDK_INT > Build.VERSION_CODES.M) {
            visibility = if (darkContent) {
                //白底黑字--浅色主题
                visibility or View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR
            } else {
                //黑底白字--深色主题
                // java  visibility &= ~ View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR
                visibility and View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR.inv()
            }
        }

        if (translucent) {
            //此时 能够使得页面的布局延伸到状态栏之下，但是状图兰的图标 也看不见了-,使得状图兰的图标 恢复可见性
            //bugfix:手快写错了 应该是 SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN。
            visibility =
                visibility or View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN or View.SYSTEM_UI_FLAG_LAYOUT_STABLE
        }

        decorView.systemUiVisibility = visibility
    }
}